package view;

import modelo.dao.PreguntasRespuestasDao;
import modelo.dao.RespuestasDao;
import modelo.pojos.*;

import java.io.IOException;
import java.io.Serializable;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import service.PreguntasService;

import java.util.List;

@ManagedBean
@ViewScoped
public class PreguntasView {

	

	@ManagedProperty("#{preguntasService}")
	private PreguntasService service;
	
	private Preguntas preguntaSeleccionada;
	
	private List<Preguntas> preguntas;

	private String seleccionada="";
	
	private int indexPregunta;
	
	private int correctas;
	private int totalPreguntas;
	private int contestadas;
	
	private PreguntasRespuestasDao phr = new PreguntasRespuestasDao();

	@PostConstruct
	public void init() {
		preguntas = service.obtenerCuestionario();
		indexPregunta=0;
		preguntaSeleccionada=preguntas.get(indexPregunta);
	}

	public List<Preguntas> getPreguntas() {
		return preguntas;
	}

	public void setPreguntas(List<Preguntas> preguntas) {
		this.preguntas = preguntas;
	}

	public Preguntas getPreguntaSeleccionada() {
		return preguntaSeleccionada;
	}

	public void setPreguntaSeleccionada(Preguntas preguntaSeleccionada) {
		this.preguntaSeleccionada = preguntaSeleccionada;
	}

	public PreguntasService getService() {
		return service;
	}

	public void setService(PreguntasService service) {
		this.service = service;
	}

	public String getSeleccionada() {
		return seleccionada;
	}

	public void setSeleccionada(String seleccionada) {
		this.seleccionada = seleccionada;
	}

	/**
	 * @return the indexPregunta
	 */
	public int getIndexPregunta() {
		return indexPregunta;
	}

	/**
	 * @param indexPregunta the indexPregunta to set
	 */
	public void setIndexPregunta(int indexPregunta) {
		this.indexPregunta = indexPregunta;
	}
	
	/**
	 * @return the correctas
	 */
	public int getCorrectas() {
		return correctas;
	}

	/**
	 * @param correctas the correctas to set
	 */
	public void setCorrectas(int correctas) {
		this.correctas = correctas;
	}

	/**
	 * @return the totalPreguntas
	 */
	public int getTotalPreguntas() {
		return totalPreguntas;
	}

	/**
	 * @param totalPreguntas the totalPreguntas to set
	 */
	public void setTotalPreguntas(int totalPreguntas) {
		this.totalPreguntas = totalPreguntas;
	}

	/**
	 * @return the contestadas
	 */
	public int getContestadas() {
		return contestadas;
	}

	/**
	 * @param contestadas the contestadas to set
	 */
	public void setContestadas(int contestadas) {
		this.contestadas = contestadas;
	}

	public void preguntaSiguiente(){

		if(!seleccionada.equals(""))
		//System.out.println("Respuesta Previa: "+preguntas.get(indexPregunta).getRespuestaSeleccionada());
		//System.out.println("Respuesta Actual: "+seleccionada);
			preguntas.get(indexPregunta).setRespuestaSeleccionada(seleccionada);
		
		
		
		if(indexPregunta<preguntas.size()-1)
			indexPregunta++;
		else
			indexPregunta=0;
		preguntaSeleccionada=preguntas.get(indexPregunta);
		System.out.println("Pregunta Siguiente: "+indexPregunta);
		System.out.println("Respuesta: "+seleccionada);
	}
	
	public void preguntaAnterior(){

//		System.out.println("Respuesta Previa: "+preguntas.get(indexPregunta).getRespuestaSeleccionada());
//		System.out.println("Respuesta Actual: "+seleccionada);
		if(!seleccionada.equals(""))
			preguntas.get(indexPregunta).setRespuestaSeleccionada(seleccionada);
		if(indexPregunta>0)
			indexPregunta--;
		else
			indexPregunta=preguntas.size()-1;
		preguntaSeleccionada=preguntas.get(indexPregunta);
		System.out.println("Pregunta Siguiente: "+indexPregunta);
		System.out.println("Respuesta: "+seleccionada);
	}
	
	public void calificarExamen(){
		//int calificacion = 0;
		
		correctas=0;
		RespuestasDao respD = new RespuestasDao();
		totalPreguntas=preguntas.size();
		contestadas = 0;
		for (Preguntas preguntasResultas : preguntas) {
			System.out.println("Pregunta "+preguntasResultas.getIdpreguntas()+
					" Respuesta Usuario:"+preguntasResultas.getRespuestaSeleccionada());
			//System.out.println("Calificacion Pregunta "+ phr.calificarParcaialmenteExamen(preguntasResultas.getIdpreguntas(), 2));
			correctas += phr.calificarParcaialmenteExamen(preguntasResultas.getIdpreguntas(), respD.obtenerIdRespuesta(preguntasResultas.getRespuestaSeleccionada()));
			FacesContext context = FacesContext.getCurrentInstance();
			contestadas ++;
			/*try {
				context.getExternalContext().redirect("resultado.xhtml");
				return;
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}*/
		}
	}
	
	public String obtenerSeleccionada(){
		//System.out.println("entra a ver si esta seleccionada");
		//System.out.println("Index: "+indexPregunta+" Respuesta:"+ preguntas.get(indexPregunta).getRespuestaSeleccionada());
		return preguntas.get(indexPregunta).getRespuestaSeleccionada();
	}
	
	public int obtenerTotalPreguntas(){
		return preguntas.size();
	}
	
	
}
